// Generated from code/ch19/Cymbol.g by ANTLR 4.9.0-SNAPSHOT


import { ATN } from "antlr4ts/atn/ATN";
import { ATNDeserializer } from "antlr4ts/atn/ATNDeserializer";
import { CharStream } from "antlr4ts/CharStream";
import { Lexer } from "antlr4ts/Lexer";
import { LexerATNSimulator } from "antlr4ts/atn/LexerATNSimulator";
import { NotNull } from "antlr4ts/Decorators";
import { Override } from "antlr4ts/Decorators";
import { RuleContext } from "antlr4ts/RuleContext";
import { Vocabulary } from "antlr4ts/Vocabulary";
import { VocabularyImpl } from "antlr4ts/VocabularyImpl";

import * as Utils from "antlr4ts/misc/Utils";


export class CymbolLexer extends Lexer {
	public static readonly T__0 = 1;
	public static readonly T__1 = 2;
	public static readonly T__2 = 3;
	public static readonly T__3 = 4;
	public static readonly T__4 = 5;
	public static readonly T__5 = 6;
	public static readonly T__6 = 7;
	public static readonly T__7 = 8;
	public static readonly T__8 = 9;
	public static readonly T__9 = 10;
	public static readonly T__10 = 11;
	public static readonly T__11 = 12;
	public static readonly T__12 = 13;
	public static readonly T__13 = 14;
	public static readonly T__14 = 15;
	public static readonly T__15 = 16;
	public static readonly T__16 = 17;
	public static readonly T__17 = 18;
	public static readonly T__18 = 19;
	public static readonly ID = 20;
	public static readonly INT = 21;
	public static readonly WS = 22;
	public static readonly SL_COMMENT = 23;

	// tslint:disable:no-trailing-whitespace
	public static readonly channelNames: string[] = [
		"DEFAULT_TOKEN_CHANNEL", "HIDDEN",
	];

	// tslint:disable:no-trailing-whitespace
	public static readonly modeNames: string[] = [
		"DEFAULT_MODE",
	];

	public static readonly ruleNames: string[] = [
		"T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", 
		"T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", 
		"T__17", "T__18", "ID", "LETTER", "INT", "WS", "SL_COMMENT",
	];

	private static readonly _LITERAL_NAMES: Array<string | undefined> = [
		undefined, "'='", "';'", "'('", "')'", "','", "'{'", "'}'", "'struct'", 
		"'class'", "':'", "'public'", "'return'", "'+'", "'.'", "'this'", "'super'", 
		"'float'", "'int'", "'void'",
	];
	private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, undefined, 
		undefined, undefined, undefined, undefined, undefined, undefined, "ID", 
		"INT", "WS", "SL_COMMENT",
	];
	public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(CymbolLexer._LITERAL_NAMES, CymbolLexer._SYMBOLIC_NAMES, []);

	// @Override
	// @NotNull
	public get vocabulary(): Vocabulary {
		return CymbolLexer.VOCABULARY;
	}
	// tslint:enable:no-trailing-whitespace


	constructor(input: CharStream) {
		super(input);
		this._interp = new LexerATNSimulator(CymbolLexer._ATN, this);
	}

	// @Override
	public get grammarFileName(): string { return "Cymbol.g"; }

	// @Override
	public get ruleNames(): string[] { return CymbolLexer.ruleNames; }

	// @Override
	public get serializedATN(): string { return CymbolLexer._serializedATN; }

	// @Override
	public get channelNames(): string[] { return CymbolLexer.channelNames; }

	// @Override
	public get modeNames(): string[] { return CymbolLexer.modeNames; }

	public static readonly _serializedATN: string =
		"\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\x19\x9F\b\x01" +
		"\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06" +
		"\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r" +
		"\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t" +
		"\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t" +
		"\x17\x04\x18\t\x18\x04\x19\t\x19\x03\x02\x03\x02\x03\x03\x03\x03\x03\x04" +
		"\x03\x04\x03\x05\x03\x05\x03\x06\x03\x06\x03\x07\x03\x07\x03\b\x03\b\x03" +
		"\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\t\x03\n\x03\n\x03\n\x03\n\x03\n\x03" +
		"\n\x03\v\x03\v\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\f\x03\r\x03\r\x03" +
		"\r\x03\r\x03\r\x03\r\x03\r\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x03\x10\x03" +
		"\x10\x03\x10\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11\x03\x11\x03\x11\x03" +
		"\x11\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03" +
		"\x13\x03\x13\x03\x14\x03\x14\x03\x14\x03\x14\x03\x14\x03\x15\x03\x15\x03" +
		"\x15\x07\x15\x80\n\x15\f\x15\x0E\x15\x83\v\x15\x03\x16\x03\x16\x03\x17" +
		"\x06\x17\x88\n\x17\r\x17\x0E\x17\x89\x03\x18\x03\x18\x03\x18\x03\x18\x03" +
		"\x19\x03\x19\x03\x19\x03\x19\x07\x19\x94\n\x19\f\x19\x0E\x19\x97\v\x19" +
		"\x03\x19\x05\x19\x9A\n\x19\x03\x19\x03\x19\x03\x19\x03\x19\x02\x02\x02" +
		"\x1A\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02\x06\v\x02\x07\r\x02\b\x0F" +
		"\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02\r\x19\x02\x0E\x1B\x02\x0F" +
		"\x1D\x02\x10\x1F\x02\x11!\x02\x12#\x02\x13%\x02\x14\'\x02\x15)\x02\x16" +
		"+\x02\x02-\x02\x17/\x02\x181\x02\x19\x03\x02\x06\x04\x02C\\c|\x03\x02" +
		"2;\x05\x02\v\f\x0F\x0F\"\"\x04\x02\f\f\x0F\x0F\x02\xA2\x02\x03\x03\x02" +
		"\x02\x02\x02\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02" +
		"\x02\x02\x02\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02" +
		"\x02\x02\x11\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02" +
		"\x02\x02\x17\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02" +
		"\x02\x02\x1D\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02!\x03\x02\x02" +
		"\x02\x02#\x03\x02\x02\x02\x02%\x03\x02\x02\x02\x02\'\x03\x02\x02\x02\x02" +
		")\x03\x02\x02\x02\x02-\x03\x02\x02\x02\x02/\x03\x02\x02\x02\x021\x03\x02" +
		"\x02\x02\x033\x03\x02\x02\x02\x055\x03\x02\x02\x02\x077\x03\x02\x02\x02" +
		"\t9\x03\x02\x02\x02\v;\x03\x02\x02\x02\r=\x03\x02\x02\x02\x0F?\x03\x02" +
		"\x02\x02\x11A\x03\x02\x02\x02\x13H\x03\x02\x02\x02\x15N\x03\x02\x02\x02" +
		"\x17P\x03\x02\x02\x02\x19W\x03\x02\x02\x02\x1B^\x03\x02\x02\x02\x1D`\x03" +
		"\x02\x02\x02\x1Fb\x03\x02\x02\x02!g\x03\x02\x02\x02#m\x03\x02\x02\x02" +
		"%s\x03\x02\x02\x02\'w\x03\x02\x02\x02)|\x03\x02\x02\x02+\x84\x03\x02\x02" +
		"\x02-\x87\x03\x02\x02\x02/\x8B\x03\x02\x02\x021\x8F\x03\x02\x02\x0234" +
		"\x07?\x02\x024\x04\x03\x02\x02\x0256\x07=\x02\x026\x06\x03\x02\x02\x02" +
		"78\x07*\x02\x028\b\x03\x02\x02\x029:\x07+\x02\x02:\n\x03\x02\x02\x02;" +
		"<\x07.\x02\x02<\f\x03\x02\x02\x02=>\x07}\x02\x02>\x0E\x03\x02\x02\x02" +
		"?@\x07\x7F\x02\x02@\x10\x03\x02\x02\x02AB\x07u\x02\x02BC\x07v\x02\x02" +
		"CD\x07t\x02\x02DE\x07w\x02\x02EF\x07e\x02\x02FG\x07v\x02\x02G\x12\x03" +
		"\x02\x02\x02HI\x07e\x02\x02IJ\x07n\x02\x02JK\x07c\x02\x02KL\x07u\x02\x02" +
		"LM\x07u\x02\x02M\x14\x03\x02\x02\x02NO\x07<\x02\x02O\x16\x03\x02\x02\x02" +
		"PQ\x07r\x02\x02QR\x07w\x02\x02RS\x07d\x02\x02ST\x07n\x02\x02TU\x07k\x02" +
		"\x02UV\x07e\x02\x02V\x18\x03\x02\x02\x02WX\x07t\x02\x02XY\x07g\x02\x02" +
		"YZ\x07v\x02\x02Z[\x07w\x02\x02[\\\x07t\x02\x02\\]\x07p\x02\x02]\x1A\x03" +
		"\x02\x02\x02^_\x07-\x02\x02_\x1C\x03\x02\x02\x02`a\x070\x02\x02a\x1E\x03" +
		"\x02\x02\x02bc\x07v\x02\x02cd\x07j\x02\x02de\x07k\x02\x02ef\x07u\x02\x02" +
		"f \x03\x02\x02\x02gh\x07u\x02\x02hi\x07w\x02\x02ij\x07r\x02\x02jk\x07" +
		"g\x02\x02kl\x07t\x02\x02l\"\x03\x02\x02\x02mn\x07h\x02\x02no\x07n\x02" +
		"\x02op\x07q\x02\x02pq\x07c\x02\x02qr\x07v\x02\x02r$\x03\x02\x02\x02st" +
		"\x07k\x02\x02tu\x07p\x02\x02uv\x07v\x02\x02v&\x03\x02\x02\x02wx\x07x\x02" +
		"\x02xy\x07q\x02\x02yz\x07k\x02\x02z{\x07f\x02\x02{(\x03\x02\x02\x02|\x81" +
		"\x05+\x16\x02}\x80\x05+\x16\x02~\x80\x05-\x17\x02\x7F}\x03\x02\x02\x02" +
		"\x7F~\x03\x02\x02\x02\x80\x83\x03\x02\x02\x02\x81\x7F\x03\x02\x02\x02" +
		"\x81\x82\x03\x02\x02\x02\x82*\x03\x02\x02\x02\x83\x81\x03\x02\x02\x02" +
		"\x84\x85\t\x02\x02\x02\x85,\x03\x02\x02\x02\x86\x88\t\x03\x02\x02\x87" +
		"\x86\x03\x02\x02\x02\x88\x89\x03\x02\x02\x02\x89\x87\x03\x02\x02\x02\x89" +
		"\x8A\x03\x02\x02\x02\x8A.\x03\x02\x02\x02\x8B\x8C\t\x04\x02\x02\x8C\x8D" +
		"\x03\x02\x02\x02\x8D\x8E\b\x18\x02\x02\x8E0\x03\x02\x02\x02\x8F\x90\x07" +
		"1\x02\x02\x90\x91\x071\x02\x02\x91\x95\x03\x02\x02\x02\x92\x94\n\x05\x02" +
		"\x02\x93\x92\x03\x02\x02\x02\x94\x97\x03\x02\x02\x02\x95\x93\x03\x02\x02" +
		"\x02\x95\x96\x03\x02\x02\x02\x96\x99\x03\x02\x02\x02\x97\x95\x03\x02\x02" +
		"\x02\x98\x9A\x07\x0F\x02\x02\x99\x98\x03\x02\x02\x02\x99\x9A\x03\x02\x02" +
		"\x02\x9A\x9B\x03\x02\x02\x02\x9B\x9C\x07\f\x02\x02\x9C\x9D\x03\x02\x02" +
		"\x02\x9D\x9E\b\x19\x02\x02\x9E2\x03\x02\x02\x02\b\x02\x7F\x81\x89\x95" +
		"\x99\x03\b\x02\x02";
	public static __ATN: ATN;
	public static get _ATN(): ATN {
		if (!CymbolLexer.__ATN) {
			CymbolLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(CymbolLexer._serializedATN));
		}

		return CymbolLexer.__ATN;
	}

}

